'''
超时设置：
你可以让 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。防止某些请求没有响应而一直处于等待状态。
    参数      类型      作用
    timeout     整型      用于设定超时时间， 单位为秒
上传文件：
Reqeuests 可以使用参数 files 模拟提交一些文件数据，假如有的接口需要我们上传文件，我们同样可以利用它来上传，实现非常简单，在requests 库中使用方法如下：
    参数      类型      作用
    files     字典      上传文件
实例如下：
    file = {'file': open(r'baidu.png', 'rb')}
    resp = requests.post(url, files=file)
身份认证：
requests 支持多种身份认证，具体使用方法如下:
    HTTP认证是一种基本认证方式，它要求用户必须提供用户名和密码进行验证。Python中的Request库可以通过设置auth参数实现HTTP认证。
    Digest认证是一种基于摘要算法的认证方式，使用时需要先发送一个请求，服务端返回一段Token，客户端需要使用这个Token进行加密后再发送请求。Python中的Request库同样可以通过设置auth参数实现Digest认证。
OAuth认证是一种常用的认证方式，它通过第三方授权方式获取用户信息，常用于社交媒体、云存储等应用场景。Python中的Request库可以使用oauthlib和requests_oauthlib库实现OAuth认证。
'''
import requests

# 1、超时
base_url = r'http://httpbin.org/'
url = base_url + 'get'
resp = requests.get(url, timeout=3)  # timeout:指定超时时间
# resp = requests.get(url, timeout=(3, 5))  # 3:connect超时，5：read超时
print(resp.status_code)
# print(resp.text)

# 2、SSL验证
# 访问 12306 首页
url = r'https://www.12306.cn/index/'
resp = requests.get(url, verify=False)  # 开启Fiddler的情况下，需要设置 verify
resp.encoding = 'utf-8'
print(resp.text)

# 3、身份认证
# 基本身份认证：访问 tomcat 主机管理页
from requests.auth import HTTPBasicAuth

url = r'http://localhost:8080/host-manager/html'
# # 写法1：
# auth = HTTPBasicAuth('tomcat', 'tomcat')
# resp = requests.get(url, auth=auth)
# print(resp.text)

# 写法2
resp = requests.get(url, auth=('tomcat', 'tomcat'))
print(resp.text)

# 摘要式身份认证
from requests.auth import HTTPDigestAuth

url = r'https://www.httpbin.org/digest-auth/auth/user/passwd'
auth = HTTPDigestAuth('user', 'passwd')
resp = requests.get(url, auth=auth)
print(resp.status_code)
print(resp.text)
